package com.xiangge.array;

import java.util.Arrays;
/*
     代码优化：
         1. 减少每一轮比较的次数
         2. 减少排序的轮数
 */
public class ArrayDemo1 {
    public static void main(String[] args) {
        // 1. 准备一个数组： {3,5,4,2,1}
        int[] arr = {90, 77, 76, 72, 59, 45, 28, 18, 12, 5};
        // 假设数组本身是有序的
        boolean flag = true;

        // 2. 使用for循环定义变量i , 循环  arr.length-1 次  代表 循环的轮数
        for (int i = 0; i < arr.length - 1; i++) { // 外层循环控制排序的轮数
            // 3. 使用for循环定义变量j , 循环 arr.length - 1 次, 代表 每一轮循环比较的次数
            for (int j = 0; j < arr.length - 1 - i; j++) { // 内层循环控制每一轮比较的次数
                // 4. 比较相邻元素的大小
                if (arr[j] > arr[j + 1]) {
                    flag = false;
                    // 5. 交换 arr[j] 和 arr[j + 1]的位置
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
            // 判断flag
            if(flag){
                break;
            }
        }
        // 打印数组
        System.out.println("排序之后的数组为：" + Arrays.toString(arr));
    }
}
